package com.tuars.instalacionesalberti.controllers.marca;

import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.Statement;
import java.sql.SQLException;
import java.util.ArrayList;

import javax.swing.JOptionPane;

import com.tuars.instalacionesalberti.connection.bd.ConnectionBaseDades;

public class ObtenerMarcas {
	
	/**
	 * Los siguientes metodos junto a la creaci�n de la tabla en la classe de la vista correspondiente
	 * Nos introducen los datos de la base de datos en la tabla crada
	 * Mediante un array multidimencional
	 */
	//Datos de las filas
	/**
	 * 
	 * @return datos que contendran las filas de la tabla
	 */
	public Object[][] getFilas()
    {
         Object fila[][]=FuncionMySQL("SELECT * FROM MARCA");
         return fila;
    }
	//TODO mirar si este metodo se puede eliminar
//	public String[] getFilasString()
//    {
//         Object fila[][]=FuncionMySQL("SELECT * FROM MARCA");
//         String sql = "SELECT * FROM MARCA";
//         
//         ConnectionBaseDades conexion = new ConnectionBaseDades();
//         String [] elementosMarca =new String[conexion.numeroDeFilas(sql)];
//         for (int i = 0; i > conexion.numeroDeFilas(sql) ; i++){
// 			elementosMarca [i]= (String) fila[0][i];
//         }
//         return elementosMarca;
//    }
	
 
    //Encabezados de la tabla
	/**
	 * 
	 * @return nombre que se le pondran a las columnas de la tabla 
	 */
	public String[] getColumnas()
    {
          String columna[]=new String[]{"Codigo marca","Marca"};
          return columna;
    }
	
	/**
	 * 
	 * @param rs Objecto ResultSet
	 * @return datos de la base de datos
	 */
    private Object[][] ResultSetToArray(ResultSet rs){
        Object obj[][]=null;
 
        try
        {
 
        rs.last();
 
        ResultSetMetaData rsmd = rs.getMetaData();
 
        int numCols = rsmd.getColumnCount();
 
        int numFils =rs.getRow();
 
        obj=new Object[numFils][numCols];
        int j = 0;
 
        rs.beforeFirst();
 
        while (rs.next())
        {
            for (int i=0;i<numCols;i++)
            {
 
                obj[j][i]=rs.getObject(i+1);
            }
            j++;
 
        }
 
        }
        catch(Exception e)
        {
 
        }
 
        return obj;
    }
 
    private Object[][] FuncionMySQL(String querySql){
 
            try
            {
                    ConnectionBaseDades con = new ConnectionBaseDades();
                    Statement s = con.Conexion().createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
                                                      ResultSet.CONCUR_READ_ONLY);
 
                    ResultSet rs = s.executeQuery(querySql);
                    Object[][] arr = ResultSetToArray(rs);
 
                    s.close();
                    rs.close();
                    con.Conexion().close();
 
                    return arr;
 
            }
            catch(Exception e)
            {
            	JOptionPane.showMessageDialog(null, "Error de la base de datos al listar las Marcas", "Error al listar Marcas", JOptionPane.ERROR_MESSAGE);
            }
 
            return null;
    }
    
    /**
     * Metodos para llenar la JList Marca
     * @return ArrayList con los codigos de las Marcas
     * @throws SQLException 
     */
    public ArrayList<String> llenarLista() throws SQLException{
    	ConnectionBaseDades con = new ConnectionBaseDades();
    	ResultSet rs = null;
    	Statement st = null;
    	
    	String sql = "SELECT Marca FROM MARCA";
    	
    	ArrayList<String> list = new ArrayList<String>();
    	
    	st = con.Conexion().createStatement();
    	rs = st.executeQuery(sql);
    	
    	while (rs.next()) {
			String nombre = rs.getString("Marca");
			list.add(nombre);
		}
    	    	
    	return list;

    }
    
    /**
     * Metodo para llenar un JComboBox con el codigo del producto
     * @return ArrayList con los codigos de las familias
     * @throws SQLException
     */
    public ArrayList<String> llenarListaCodigo() throws SQLException{
    	ConnectionBaseDades con = new ConnectionBaseDades();
    	ResultSet rs = null;
    	Statement st = null;
    	
    	String sql = "SELECT Codigo_Marca FROM MARCA";
    	
    	ArrayList<String> list = new ArrayList<String>();
    	
    	st = con.Conexion().createStatement();
    	rs = st.executeQuery(sql);
    	
    	while (rs.next()) {
			String nombre = rs.getString("Codigo_Marca");
			list.add(nombre);
		}
    	rs.close();
    	st.close();
    	con.Conexion().close();
    	return list;
    }

}
